When developing applications or programs, developers want to know the performance requirements and characteristics of the application or program. This provides the developer with an understanding of what processing resources will be necessary for executing the application, so that the developer can ensure that the application will not require more processing resources than may be available for use. By identifying the performance characteristics of the application, the developer can identify whether the application would be scalable.
In order to identify the performance requirements of an application, performance profiles are generated. Profiling an application includes determining the time, communication requirements, resource load, and the like, consumed by each function in the application when it is running or executing on the real system. In the present setting, the profile provides a summary of interprocess communication behavior. Due to the nature of profiling, the profiler must take samples of communications by the application while the application is running. Accordingly, to capture these samples the profiler interrupts the application. Therefore, when more samples are taken more interference is caused to the application.